#include "heartRequest.h"

void pearsCmd(cJSON *cmd_list)
{
    //判断参数是不是一个数组
    if (!cJSON_IsArray(cmd_list))
    {
        //不是数组直接返回
        return;
    }
    
    //获取数组长度 --> 遍历需要
    int size = cJSON_GetArraySize(cmd_list);
    //遍历
    for (int i = 0; i < size; i++)
    {
        //获取元素
        cJSON *item = cJSON_GetArrayItem(cmd_list, i);
        //获取对应的操作的 int 型数据
        int cmd = item->valueint;
        //执行操作
        switch (cmd)
        {
        case 1:
            break;
        
        default:
            break;
        }
    }
    
}

//回调函数 --> 处理来自 HTTP get 请求的响应数据  --> contents:服务器响应的原始数据
size_t  heartCallback(void *contents, size_t size, size_t nmemb, void *userp) {
    size_t realsize = size * nmemb;
    // 这里可以处理获取到的数据，比如存储到文件或者其他操作
    char * result = (char *)contents;
    printf("%s\n",result);
    
    cJSON *jsonstr= cJSON_Parse(result);
    if(jsonstr!=NULL)
    {
        cJSON *successRoot = cJSON_GetObjectItemCaseSensitive(jsonstr,"success");
        cJSON *messageRoot = cJSON_GetObjectItemCaseSensitive(jsonstr,"message");
        if(!cJSON_IsTrue(successRoot)){
            printf("%s\n",messageRoot->valuestring);
            return -1;    
        }

        //获取集合
        cJSON *data = cJSON_GetObjectItemCaseSensitive(jsonstr,"data");
        cJSON *ad_list= cJSON_GetObjectItemCaseSensitive(data,"ad_list");
        cJSON *cmd_list= cJSON_GetObjectItemCaseSensitive(data,"cmd_list");

        //获取指令集 --> cmd_list
        pearsCmd(cmd_list);

    }
   
    return realsize;
}


void sendHeartRequest(char *ip, char *sn)
{
    char *url ="http://%s/heart.json?sn=%s";
    printf("ip = %s\n", ip);
    char * realUrl= calloc(1,100);
    sprintf(realUrl,url,ip,sn);
    printf("request address:%s\n",realUrl);

    //发送一个get请求
    //http://ip/config.json?sn=1001&location=sasada
    sendGetRequest(realUrl,heartCallback);

}
